Phone no: (021) 7989671 or email us: info@zahra-itsolution.com
Posted on 16 August 2024
Halo teman-teman! Dalam artikel ini, kita akan membuat fitur yang sangat berguna untuk aplikasi Laravel Anda, yaitu fitur cetak PDF di halaman Mata Kuliah. Dengan fitur ini, pengguna bisa mengunduh data Mata Kuliah dalam format PDF untuk keperluan dokumentasi atau laporan. Tutorial ini akan saya buat lengkap dan sedetail mungkin, agar teman-teman yang baru belajar Laravel pun bisa mengikutinya dengan mudah. Yuk, kita mulai!
Pertama-tama, kita perlu memasang package DomPDF yang akan digunakan untuk menghasilkan file PDF. Package ini membuat proses konversi data ke PDF menjadi sangat mudah di Laravel.
a. Instalasi Package
Jalankan perintah ini di terminal:
composer require barryvdh/laravel-dompdf
Package ini akan menambahkan DomPDF ke dalam project Laravel Anda.
b. Registrasi Service Provider dan Facade (Untuk Versi Laravel 5.5 ke Bawah)
Pada Laravel 5.5 ke atas, service provider dan facade secara otomatis didaftarkan, tetapi untuk Laravel versi sebelumnya, tambahkan kode berikut ke file config/app.php
:
Barryvdh\DomPDF\ServiceProvider::class,
'PDF' => Barryvdh\DomPDF\Facade::class,
c. Publikasi Konfigurasi DomPDF
Setelah itu, jalankan perintah berikut untuk mempublikasikan file konfigurasi DomPDF:
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
Setelah melakukan langkah ini, package DomPDF sudah siap digunakan.
Selanjutnya, kita akan menambahkan route di routes/web.php
yang akan menangani permintaan untuk mencetak PDF.
a. Buka file routes/web.php
Buka file routes/web.php
yang terletak di folder routes
pada struktur Laravel. Tambahkan route baru berikut:
use App\Http\Controllers\MatakuliahController; Route::get('/matakuliah/pdf', [MatakuliahController::class, 'exportPDF'])->name('matakuliah.pdf');
Route ini akan mengarahkan pengguna ke metode exportPDF
di MatakuliahController
yang akan kita buat pada langkah berikutnya.
Sekarang, kita akan membuat logika untuk mencetak PDF di MatakuliahController
. Metode ini akan mengambil data Mata Kuliah dari database dan mengonversinya menjadi PDF.
a. Buka MatakuliahController.php
Buka file MatakuliahController.php
yang ada di folder app/Http/Controllers/
.
b. Tambahkan Metode exportPDF
Tambahkan kode berikut ke dalam MatakuliahController
:
use Barryvdh\DomPDF\Facade as PDF; public function exportPDF() { // Mengambil semua data Mata Kuliah dari database $matakuliah = Matakuliah::all();
// Load view untuk PDF dan mengirimkan data Mata Kuliah ke view tersebut $pdf = PDF::loadView('matakuliah.pdf', compact('matakuliah'));
// Mengunduh file PDF dengan nama 'matakuliah.pdf' return $pdf->download('matakuliah.pdf'); }
Metode ini menggunakan DomPDF untuk mengonversi data Mata Kuliah yang diambil dari database ke dalam format PDF, kemudian file PDF tersebut akan diunduh oleh pengguna.
Selanjutnya, kita perlu membuat view yang akan digunakan sebagai template untuk file PDF. View ini akan menampilkan data Mata Kuliah dalam format tabel yang rapi.
a. Buat Folder dan File untuk View PDF
Buat file baru bernama pdf.blade.php
di dalam folder resources/views/matakuliah/
. Jika folder matakuliah
belum ada, buat folder tersebut terlebih dahulu, Lalu Tambahkan Kode Berikut.
@extends('layouts.app') @section('content') <div class="container"> <h1>Daftar Mata Kuliah</h1> <a href="{{ route('matakuliah.create') }}" class="btn btn-primary mb-3">Tambah Mata Kuliah</a> @if ($message = Session::get('success')) <div class="alert alert-success"> {{ $message }} </div> @endif <table class="table table-bordered"> <thead> <tr> <th>No</th> <th>Kode Mata Kuliah</th> <th>Nama Mata Kuliah</th> <th>Aksi</th> </tr> </thead> <tbody> @foreach ($matakuliah as $mk) <tr> <td>{{ $loop->iteration }}</td> <td>{{ $mk->CodeMataKuliah }}</td> <td>{{ $mk->NamaMataKuliah }}</td> <td> <a href="{{ route('matakuliah.edit', $mk->id) }}" class="btn btn-warning">Edit</a> <form action="{{ route('matakuliah.destroy', $mk->id) }}" method="POST" style="display:inline;"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger" onclick="return confirm('Yakin ingin menghapus?')">Hapus</button> </form> </td> </tr> @endforeach </tbody> </table> {{ $matakuliah->links() }} </div> @endsection
b. Tambahkan Tombol Print PDF di View
Isi file pdf.blade.php
dengan kode HTML berikut:
@extends('layouts.app') @section('content') <div class="container"> <h1>Daftar Mata Kuliah</h1> <a href="{{ route('matakuliah.create') }}" class="btn btn-primary mb-3">Tambah Mata Kuliah</a> <a href="{{ route('matakuliah.pdf') }}" class="btn btn-danger mb-3">Cetak PDF</a> @if ($message = Session::get('success')) <div class="alert alert-success"> {{ $message }} </div> @endif <table class="table table-bordered"> <thead> <tr> <th>No</th> <th>Kode Mata Kuliah</th> <th>Nama Mata Kuliah</th> <th>Aksi</th> </tr> </thead> <tbody> @foreach ($matakuliah as $mk) <tr> <td>{{ $loop->iteration }}</td> <td>{{ $mk->CodeMataKuliah }}</td> <td>{{ $mk->NamaMataKuliah }}</td> <td> <a href="{{ route('matakuliah.edit', $mk->id) }}" class="btn btn-warning">Edit</a> <form action="{{ route('matakuliah.destroy', $mk->id) }}" method="POST" style="display:inline;"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger" onclick="return confirm('Yakin ingin menghapus?')">Hapus</button> </form> </td> </tr> @endforeach </tbody> </table> {{ $matakuliah->links() }} </div> @endsection
Tombol ini akan mengarahkan pengguna ke route yang memicu proses cetak PDF dan mengunduhnya.
Sekarang, jalankan aplikasi Laravel Anda dan buka halaman daftar Mata Kuliah. Anda akan melihat tombol Cetak PDF di bagian atas tabel. Ketika tombol ini diklik, file PDF yang berisi semua data Mata Kuliah akan otomatis diunduh.
Selamat! Anda telah berhasil menambahkan fitur cetak PDF di halaman Mata Kuliah Laravel Anda. Fitur ini sangat berguna untuk menghasilkan laporan dalam format PDF yang bisa diunduh dan dicetak dengan mudah.
Dengan mengikuti tutorial ini, Anda telah belajar cara menggunakan package DomPDF untuk menghasilkan PDF dari view Laravel, cara membuat route dan controller untuk menangani permintaan cetak, serta cara menampilkan tombol cetak PDF di halaman Mata Kuliah.
Jika ada yang ingin Anda tanyakan atau jika Anda ingin mengembangkan fitur ini lebih lanjut, jangan ragu untuk bereksperimen dan menyesuaikannya dengan kebutuhan aplikasi Anda. Selamat mencoba!